/**
 * @addtogroup mfc_timer
 * mfc_timer
 * @{
 */
/**
 * @file         mfc_timer.h
 * @brief        mfc定时器
 * @note    
 * @author       谈杰(jie.tan@hopechart.com)
 * @date         2023-06-19
 * @version      1.0
 *
 * @par          修改日志
 * <table>
 * <tr><th>Date        <th>Version               <th>Author          <th>Description
 * <tr><td>2023-06-19  <td>1.0                   <td>tanjie          <td>创建初始版本
 * @copyright    杭州鸿泉物联网技术股份有限公司
 */
#ifndef _MFC_TIMER_H_
#define _MFC_TIMER_H_

#include "ofc/ofc_types.h"
#include "mfc_timer_server.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 创建定时器
 * @param self：定时器服务对象
 * @param timer_cbk：定时器回调 
 * @param interval：定时间隔，单位：ms
 * @param *user_param: 用户传参
 * @return >= 0 成功， 定时器索引
 *         <  0 错误码，见THccMidMfcErrorCode       
 */
Int32 TMfTimerServerNewTimer(TMfTimerServer *self, TMfTimerCallback timer_cbk, UInt32 interval, void *user_param);

/**
 * 销毁定时器
 * @param self：定时器服务对象
 * @param timer_index：定时器索引
 * @return == 0 成功
 *         <  0 错误码，见THccMidMfcErrorCode       
 */
Int32 TMfTimerServerDeleteTimer(TMfTimerServer *self, UInt32 timer_index);

/**
 * 启动定时器
 * @param self：定时器服务对象
 * @param timer_index: 定时器索引
 * @param start_mode: 启动模式，0：单次启动，1：重载启动
 * @return == 0 成功
 *         <  0 错误码，见THccMidMfcErrorCode
 */
Int32 TMfTimerServerStartTimer(TMfTimerServer *self, UInt32 timer_index, Bool start_mode);

/**
 * 停止定时器
 * @param self：定时器服务对象
 * @param timer_index: 定时器索引
 * @return == 0 成功
 *         <  0 错误码，见THccMidMfcErrorCode
 */
Int32 TMfTimerServerStopTimer(TMfTimerServer *self, UInt32 timer_index);

/**
 * 获取定时器启动状态
 * @param self：定时器服务对象
 * @param timer_index: 定时器索引
 * @param *timer_state: 定时器状态,0：不启用；1：启用；2：单次启动；3:重载启动
 * @return == 0 成功
 *         <  0 错误码，见THccMidMfcErrorCode
 */
Int32 TMfTimerServerGetTimerState(TMfTimerServer *self, UInt32 timer_index, UInt8 *timer_state);

/**
 * 获取定时器定时间隔
 * @param self：定时器服务对象
 * @param timer_index: 定时器索引
 * @param *interval: 定时间隔，单位：ms
 * @return == 0 成功
 *         <  0 错误码，见THccMidMfcErrorCode
 */
Int32 TMfTimerServerGetTimerInterval(TMfTimerServer *self, UInt32 timer_index, UInt32 *interval);

/**
 * 设置定时器定时间隔，本次定时间隔开始改变
 * @param self：定时器服务对象
 * @param timer_index: 定时器索引
 * @param interval: 定时间隔，单位：ms
 * @return == 0 成功
 *         <  0 错误码，见THccMidMfcErrorCode
 */
Int32 TMfTimerServerSetTimerInterval(TMfTimerServer *self, UInt32 timer_index, UInt32 interval);

#ifdef __cplusplus
} // extern "C" {
#endif

#endif // _MFC_TIMER_H_

/**
 * @}
 */
